package sv.ues.fia.fragmentcontrol;

import java.util.ArrayList;
import java.util.List;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Spinner;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
import sv.ues.fia.R;
import sv.ues.fia.bdcontrol.ControlBDHelper;
import sv.ues.fia.clases.MyDateFormat;
import sv.ues.fia.clases.SearchListItem;
import sv.ues.fia.clases.SearchListItemAdapter;
import sv.ues.fia.entity.Defensa;
import sv.ues.fia.entity.Etapa;
import sv.ues.fia.entity.TrabajoGraduacion;
import sv.ues.fia.entity.Ubicacion;

public class DefensaFragment extends Fragment {

	public int currentPage;
	/** DECLARAR AQUI LOS OBJETOS VIEW **/
	public ListView lvResultDefensa;
	public List<Defensa> listResultDefensa;
	public List<SearchListItem> listItemsResult;
	public SearchListItemAdapter adapter;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		/** Getting the arguments to the Bundle object */
		Bundle data = getArguments();
		
		/** Getting integer data of the key current_page from the bundle */
		currentPage = data.getInt("current_page", 0);
		listItemsResult = new ArrayList<SearchListItem>();

	}

	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		View v= null;
		/** Inflar el layout correcto para cada pagina **/
		if (currentPage == 1) {
			
			v = inflater.inflate(R.layout.activity_defensa_insertar, container, false);	
			final ControlBDHelper db = new ControlBDHelper(this.getActivity());
			
			// Listas para los espinner
			List<TrabajoGraduacion> listTG= null;
			List<Etapa> listEtapa=null;
			List<Ubicacion> listUbicacion= null;
			
			Button btnSave = (Button) v.findViewById(R.id.btnSaveDefensa);
			final Spinner tipoTG = (Spinner) v.findViewById(R.id.spinnerIdTGDefensa);
			final Spinner tipoEtapa = (Spinner) v.findViewById(R.id.spinnerIdEtapaDefensa);
			final Spinner tipoUbicacion = (Spinner) v.findViewById(R.id.spinnerIdUbicacionDefensa);
			final EditText obsDefensa = (EditText) v.findViewById(R.id.edtObsDefensa);
			final DatePicker dateDefensa = (DatePicker) v.findViewById(R.id.dateDefensa);
			
			//Llenar los spinners 
			/** CONSULTAR BD PARA LLENAR ESPINNERS **/
			db.abrir();
				listTG=db.consultarTG("", "");
				listEtapa=db.consultarEtapa("", "");
				listUbicacion= db.consultarUbicacion("");
			db.cerrar();
			
			//setear los spinners en los views
			ArrayAdapter<TrabajoGraduacion> spinnerTGAdapter = new ArrayAdapter<TrabajoGraduacion>(getActivity(),android.R.layout.simple_spinner_dropdown_item, listTG);
			tipoTG.setAdapter(spinnerTGAdapter);
			ArrayAdapter<Etapa> spinnerEtapaAdapter = new ArrayAdapter<Etapa>(getActivity(),android.R.layout.simple_spinner_dropdown_item, listEtapa);
			tipoEtapa.setAdapter(spinnerEtapaAdapter);
			ArrayAdapter<Ubicacion> spinnerUbicacionAdapter = new ArrayAdapter<Ubicacion>(getActivity(),android.R.layout.simple_spinner_dropdown_item, listUbicacion);
			tipoUbicacion.setAdapter(spinnerUbicacionAdapter);
			
			btnSave.setOnClickListener(new OnClickListener() {

				@Override
				public void onClick(View v) {
					
					int day = dateDefensa.getDayOfMonth();
					int month = dateDefensa.getMonth();
					int year = dateDefensa.getYear();

					String formatedDate = MyDateFormat.formatDate(year, month, day);
					TrabajoGraduacion selectedTG = (TrabajoGraduacion) tipoTG.getSelectedItem();
					Etapa selectedEtapa = (Etapa) tipoEtapa.getSelectedItem();
					Ubicacion selectedUbicacion = (Ubicacion) tipoUbicacion.getSelectedItem();
					
					Defensa newDefensa = new Defensa();
					newDefensa.setIdUbicacion(selectedUbicacion.getIdUbicacion());
					newDefensa.setIdEtapa(selectedEtapa.getIdEtapa());
					newDefensa.setIdTG(selectedTG.getIdTG());
					newDefensa.setObsDefensa(obsDefensa.getText().toString());
					newDefensa.setFechaDefensa(formatedDate);
					
					
					db.abrir();
					Toast.makeText(getActivity(), db.insertarDefensa(newDefensa),Toast.LENGTH_LONG).show();
					db.cerrar();
				}
				
			});
			
		} else if (currentPage == 2){
			
			v = inflater.inflate(R.layout.activity_defensa_buscar, container, false);			
			final ControlBDHelper db = new ControlBDHelper(this.getActivity());
			
			lvResultDefensa = (ListView) v.findViewById(R.id.ListResultDefense);
			
			final EditText edtIdDef = (EditText) v.findViewById(R.id.edtIdDefensa);
			final EditText edtTG = (EditText) v.findViewById(R.id.edtIdTG);
			final EditText edtEtapa = (EditText) v.findViewById(R.id.edtIdEtapa);
			
			ListView search = (ListView) v.findViewById(R.id.listOption);
			
			/** LISTENER DEL BOTON BUSCAR **/
			search.setOnItemClickListener(new OnItemClickListener() {

				@Override
				public void onItemClick(AdapterView<?> arg0, View arg1,
						int arg2, long arg3) {
					
					/** CONSULTAR LISTADO DE PERFILES SEGUN ID O NOMBRE **/
					db.abrir();					
					listResultDefensa = db.consultarDefensa(edtIdDef.getText().toString(), edtTG.getText().toString(), edtEtapa.getText().toString()  );					
					db.cerrar();
					
					/** VACIAR RESULTADOS ANTES DE AGREGAR LOS NUEVOS **/
					listItemsResult.clear();
					
					/** LLENAR OTRA LISTA SOLO PARA AGREGARLO AL LISTVIEW **/
					for(Defensa x: listResultDefensa){
						
						SearchListItem item = new SearchListItem();
						
						// Se le asigna un TITULO 
						item.setTitle(getActivity().getString(R.string.idDefensa)+" "+ String.valueOf(x.getIdDefensa()));
						
						// Se le asigna un SUBTITULO
						item.setSubTitle(getActivity().getString(R.string.idTG) +" "+x.getIdTG());
						listItemsResult.add(item);						
					}
					
					adapter.notifyDataSetChanged();
	     
				}

			});
			
			/** SE CREA EL ADAPTER PERSONALIZADO PARA EL LISTVIEW **/
			adapter = new SearchListItemAdapter(this.getActivity(),listItemsResult);
			lvResultDefensa.setAdapter(adapter);
			this.getActivity().registerForContextMenu(lvResultDefensa);
			
		}
		return v;
	}
			
}
